package com.wgh.order.entity;

import com.wgh.common.entity.BaseEntity;
import com.wgh.order.entity.OrderItem;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableField;

/**
 * 订单主表实体
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("order_main")
public class Order extends BaseEntity {
    
    /**
     * 用户ID
     */
    private Long userId;
    
    /**
     * 订单编号
     */
    private String orderSn;
    
    /**
     * 订单总金额
     */
    private BigDecimal totalAmount;
    
    /**
     * 支付金额
     */
    private BigDecimal payAmount;
    
    /**
     * 运费金额
     */
    private BigDecimal freightAmount;
    
    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;
    
    /**
     * 订单状态：0-待付款，1-待发货，2-待收货，3-待评价，4-已完成，5-已取消，6-已退款
     */
    private Integer orderStatus;
    
    /**
     * 支付状态：0-未支付，1-已支付，2-支付失败
     */
    private Integer payStatus;
    
    /**
     * 支付方式：0-支付宝，1-微信支付，2-银行卡支付
     */
    private Integer payType;
    
    /**
     * 支付时间
     */
    private LocalDateTime payTime;
    
    /**
     * 发货时间
     */
    private LocalDateTime deliveryTime;
    
    /**
     * 完成时间
     */
    private LocalDateTime finishTime;
    
    /**
     * 取消时间
     */
    private LocalDateTime cancelTime;
    
    /**
     * 收货人姓名
     */
    private String receiverName;
    
    /**
     * 收货人电话
     */
    private String receiverPhone;
    
    /**
     * 收货地址
     */
    private String receiverAddress;
    
    /**
     * 商品总数
     */
    private Integer totalQuantity;
    
    /**
     * 订单备注
     */
    private String remark;
    
    /**
     * 交易流水号
     */
    private String transactionId;
    
    /**
     * 订单项列表（非数据库字段）
     */
    @TableField(exist = false)
    private List<OrderItem> orderItems;
}